parser grammar AnalizadorANTLRParser;

options {
  language = Java;
  tokenVocab = AnalizadorANTLRLexer;
}

@header {package PL.practica6;}

@members{

ArrayList <RecognitionException> errores = new ArrayList<RecognitionException>();

public boolean listaVacia (){
    if (errores.isEmpty()){
      return true;
    }else
      return false;
}

public ArrayList getListaErrores(){return errores;}


@Override
public void reportError (RecognitionException e){
  System.out.println (getErrorMessage(e, getTokenNames()));
  errores.add(e);
}

}
entrada: tipoanalizador? opciones? cabecera? regla*;
  tipoanalizador : PARSER GRAMMAR IDENT SEPARADOR;
  opciones : OPTIONS ABRIRLLAVE (IDENT IGUAL IDENT SEPARADOR)* CERRARLLAVE;
  cabecera : ARROBA HEADER ABRIRLLAVE ((IMPORT|PACKAGE) IDENT SEPARADOR)*  CERRARLLAVE;
regla : IDENTREGLA DOSPUNTOS  (reglasimple|reglaor|reglaconjunta)* SEPARADOR;
  reglasimple : IDENTTOKEN|IDENTREGLA OPERADORUNITARIO?;
  reglaor : ABRIRPARENTESIS reglasimple (OR reglasimple)+  CERRARPARENTESIS OPERADORUNITARIO?;
  reglaconjunta : ABRIRPARENTESIS reglasimple|reglaor CERRARPARENTESIS;